<?php
/**
 * geotable表操作类
 * Created by PhpStorm.
 * User: ADKi
 * Date: 2016/8/26 0026
 * Time: 11:03
 * @author ADKi
 * @url http://lbsyun.baidu.com/index.php?title=lbscloud/api/geodata
 */

class geotable
{
    /**
     * 创建表（create geotable）接口
     * form请求
     * name	geotable的中文名称	string(45)	必选
     * geotype	geotable持有数据的类型	int32	必选    1：点；2：线；3：面。默认为1（当前不支持“线”）
     * is_published	是否发布到检索	int32	必选
     *  0：未自动发布到云检索，
     *  1：自动发布到云检索；
     *  注：1）通过URL方式创建表时只有is_published=1时 在云检索时表内的数据才能被检索到。
     *  2）可通过数据管理模块设置，在设置中将是否发送到检索一栏中选定为是即可。
     * ak	用户的访问权限key	string(50)	必选
     * sn	用户的权限签名	string(50)	可选
     * timestamp	时间戳	uint32	可选，配合sn使用，增加时间戳安全验证
     *
     *  响应参数（json格式）
     * status	状态码	int32	0代表成功，其它取值含义另行说明
     * message	响应的信息	string(50)	状态码描述
     * id	新增的数据的id	string
     * */
    private $_create_geotable = 'http://api.map.baidu.com/geodata/v3/geotable/create';

    /**
     * 查询表（list geotable）接口
     * GET请求
     * name	geotable的名字	string(45)	可选
     * ak	用户的访问权限key	string(50)	必选
     * sn	用户的权限签名	string(50)	可选
     *
     *  响应参数（json格式）
     * status	状态码	int32	0代表成功，其它取值含义另行说明
     * message	响应的信息	string(50)	状态码描述
     * size	数据个数	int32
     * geotables array 查询结果
     * */

    private $_list_geotable = 'http://api.map.baidu.com/geodata/v3/geotable/list';

    /**
     * 查询指定id表（detail geotable）接口
     * GET请求
     * id	指定geotable的id	int32	必选
     * ak	用户的访问权限key	string(50)	必选
     * sn	用户的权限签名	string(50)	可选
     * */
    private $_detail_geotable = 'http://api.map.baidu.com/geodata/v3/geotable/detail';

    /**
     * 修改表（update geotable）接口
     * form请求
     * id	geotable主键	uint32	必选
     * is_published	是否发布到检索	int32	会引起批量操作
     * name	geotable的中文名称	string(45)	可选
     * ak	用户的访问权限key	string(50)	必选
     * sn	用户的权限签名	string(50)	可选
     * */
    private $_update_geotable = 'http://api.map.baidu.com/geodata/v3/geotable/update';

    /**
     * 删除表（geotable）接口
     * form请求
     * 注：当geotable里面没有有效数据时，才能删除geotable
     * id	表主键	uint32	必选
     * ak	用户的访问权限key	string(50)	必选
     * sn	用户的权限签名	string(50)	可选
     * */
    private $_delete_geotable = 'http://api.map.baidu.com/geodata/v3/geotable/delete';

    /**
     * 创建新数据
     * @param $send_data array 要form的数据
     * @return object
     */
    public function PostCreatedGeo ($send_data) {
        if (!is_null($send_data['sn'])) {
            $send_data['timestamp'] = time();
        }
        //初始化
        $form = curl_init();
        curl_setopt($form, CURLOPT_URL, $this->_create_geotable); //请求地址
        curl_setopt($form, CURLOPT_HEADER, false);  //没有头
        curl_setopt($form, CURLOPT_RETURNTRANSFER, true); //不直接输出到页面
        curl_setopt($form, CURLOPT_POST, true); //提交方式
        curl_setopt($form, CURLOPT_POSTFIELDS, $send_data); //提交数据
        $result = curl_exec($form);
        curl_close($form);
        return json_decode($result);
    }

    /**
     * 查询表全部表
     * @param $send_data array GET参数
     * @return object
     * */
    public function GetList ($send_data)
    {
        $url = $this->_list_geotable.'?'.http_build_query($send_data);
        $form = curl_init((string)$url);
        curl_setopt($form, CURLOPT_HEADER, false);
        curl_setopt($form, CURLOPT_RETURNTRANSFER, true); //不直接输出到页面
        $result = curl_exec($form);
        curl_close($form);
        return json_decode($result);
    }

    /**
     * 查询指定id表
     * @param $send_data array GET参数
     * @return object
     * */
    public function  GetDetail ($send_data)
    {
        $url = $this->_detail_geotable.'?'.http_build_query($send_data);
        $form = curl_init((string)$url);
        curl_setopt($form, CURLOPT_HEADER, false);
        curl_setopt($form, CURLOPT_RETURNTRANSFER, true); //不直接输出到页面
        $result = curl_exec($form);
        curl_close($form);
        return json_decode($result);
    }

    /**
     * 修改表
     * @param $send_data array GET参数
     * @return object
     * */
    public function PostUpdate($send_data)
    {
        //初始化
        $form = curl_init();
        curl_setopt($form, CURLOPT_URL, $this->_update_geotable); //请求地址
        curl_setopt($form, CURLOPT_HEADER, false);  //没有头
        curl_setopt($form, CURLOPT_RETURNTRANSFER, true); //不直接输出到页面
        curl_setopt($form, CURLOPT_POST, true); //提交方式
        curl_setopt($form, CURLOPT_POSTFIELDS, $send_data); //提交数据
        $result = curl_exec($form);
        curl_close($form);
        return json_decode($result);
    }
    
    /**
     * 删除表
     * @param $send_data array POST参数
     * @return object
     * */
    public function PostDelete($send_data)
    {
        //初始化
        $form = curl_init();
        curl_setopt($form, CURLOPT_URL, $this->_delete_geotable); //请求地址
        curl_setopt($form, CURLOPT_HEADER, false);  //没有头
        curl_setopt($form, CURLOPT_RETURNTRANSFER, true); //不直接输出到页面
        curl_setopt($form, CURLOPT_POST, true); //提交方式
        curl_setopt($form, CURLOPT_POSTFIELDS, $send_data); //提交数据
        $result = curl_exec($form);
        curl_close($form);
        return json_decode($result);
    }
}